export default {
  namespaced: true,
  state: {
    //每个商品都包含如下6个属性
    // {goods_id,goods_price,goods_name,goods_count,goods_small_logo,goods_state}
    cart: JSON.parse(uni.getStorageSync('cart') || '[]')
  }, // 模块内的状态已经是嵌套的了，使用 `namespaced` 属性不会对其产生影响
  getters: {
    // 所有商品数量
    total(state) {
      let allCount = 0;
      state.cart.forEach(item => {
        allCount += item.goods_count
      })
      return allCount
    },
    //已经勾选商品的数量
    checkedCount(state) {
      return state.cart.filter(item => {
        return item.goods_state === true
      }).reduce((initValue, good) => {
        return initValue += good.goods_count
      }, 0)
    },
    checkedAllPrice(state) {
      return state.cart.filter(item => {
        return item.goods_state === true
      }).reduce((init, good) => {
        return init + good.goods_price * good.goods_count
      }, 0)
    }
  },
  actions: {

  },
  mutations: {
    // 增加商品到购物车
    addToCart(state, val) {
      let findResult = state.cart.find(x => val.goods_id === x.goods_id)
      // console.log(findResult);
      if (!findResult) {
        state.cart.push(val)
      } else {
        findResult.goods_count++
      }
      // console.log(state.cart);
      this.commit('m_cart/saveCart')
    },
    // 保存的购物车数据到本地
    saveCart(state) {
      uni.setStorageSync('cart', JSON.stringify(state.cart));
    },
    //改变购物车的选中状态
    updateRadio(state, good) {
      state.cart.forEach((item, i) => {
        if (item.goods_id == good.goods_id) {
          item.goods_state = !good.goods_state
        }
      })
      // console.log(good);
      this.commit('m_cart/saveCart')
    },
    // 更新购物车每件商品的数量
    updateCount(state, good) {
      // console.log(good);
      state.cart.forEach((item, i) => {
        if (item.goods_id == good.goods_id) {
          item.goods_count = good.goods_count
        }
      })
      this.commit('m_cart/saveCart')
    },
    //删除购物车中的商品
    removeGood(state, good) {
      state.cart = state.cart.filter(item => {
        return item.goods_id !== good.goods_id
      })
      this.commit('m_cart/saveCart')
    },
    // 改变商品是否全选状态
    updateAllState(state, val) {
      state.cart.forEach(item => {
        item.goods_state = val
      })
      this.commit('m_cart/saveCart')
    }
  },
}
